Robots may operate within a space to perform particular tasks. For example, servant robots may be tasked with navigating within an operational space, locating objects, and manipulating objects. A robot may be commanded to find an object within the operating space, pick up the object, and move the object to a different location within the operating space. Robots are often programmed to manipulate objects quickly and in a most efficient way possible.
However, calculating an appropriate grasp posture autonomously is difficult and computationally expensive. For each grasp candidate, the grasp quality must be tested to determine how well the grasp can securely hold a target object. Not all grasp patterns will yield a successful grasp of the target object. For example, the grasp pattern may cause the joints of the robot end effector to collide with the target object, or the grip provided by the grasp pattern will not be able to hold the target object. Further, a valid arm trajectory must be performed simultaneously within the trajectory planning. Such computations may slow down the on-line processes of a robot. In some cases, grasp patterns associated with a target object may also be taught by tedious manual programming or tele-operation of the robot. This process is slow and prone to human error.
Additionally, uncertainty may exist during robotic manipulation of a target object. For example, there may be uncertainty as to a target object's initial pose resulting from the robot's object localization system. Such uncertainty may lead to a grasp failure. Uncertainty may also exist as to object displacement and pose resulting from the dynamics of grasping and lifting a target object with an end effector of a robot.
Accordingly, a need exists for alternative methods and computer-program products for generating successful robot grasp patterns that are developed off-line with respect to robot processes and take into consideration target object pose and displacement uncertainties.